/*
 * multer: Multer 是一个 node.js 中间件，用于处理 multipart/form-data 类型的表单数据，它主要用于上传文件。它是写在 busboy 之上非常高效。
    注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。
 * https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
 */
import { executeCommand, response } from "@/utils/api";
import { Router } from "express";
import multer from "multer";
import { resolve } from "path";
const router = Router();

// 默认上传到src/static文件夹下面
// 根据自己的需求自定义文件目录以及文件名
const storage = multer.diskStorage({
  // 上传目录
  destination: (req, file, callback) => {
    callback(null, resolve(__dirname, "../../static"));
  },
  // 上传文件名
  filename(req, file, callback) {
    console.log(file);
    callback(null, file.originalname);
  },
});

const upload = multer({
  storage,
  fileFilter: (req, file, callback) => {
    // 解决中文乱码问题
    file.originalname = Buffer.from(file.originalname, "latin1").toString(
      "utf-8"
    );
    callback(null, true);
  },
});

// 文件
router.post("/upload", upload.single("file"), async (req, res) => {
  executeCommand(req, res, async () => {
    // console.log(req.file);
    response(res, 200, {}, "上传成功");
  });
});

export default router;
